<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <title>Swagger UI</title>
    <link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32"/>
    <link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16"/>
    <link href='css/typography.css' media='screen' rel='stylesheet' type='text/css'/>
    <link href='css/reset.css' media='screen' rel='stylesheet' type='text/css'/>
    <link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
    <link href='css/reset.css' media='print' rel='stylesheet' type='text/css'/>
    <link href='css/print.css' media='print' rel='stylesheet' type='text/css'/>

    <script src='lib/object-assign-pollyfill.js' type='text/javascript'></script>
    <script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
    <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
    <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
    <script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
    <script src='lib/handlebars-4.0.5.js' type='text/javascript'></script>
    <script src='lib/lodash.min.js' type='text/javascript'></script>
    <script src='lib/backbone-min.js' type='text/javascript'></script>
    <script src='swagger-ui.js' type='text/javascript'></script>
    <script src='lib/highlight.9.1.0.pack.js' type='text/javascript'></script>
    <script src='lib/highlight.9.1.0.pack_extended.js' type='text/javascript'></script>
    <script src='lib/jsoneditor.min.js' type='text/javascript'></script>
    <script src='lib/marked.js' type='text/javascript'></script>
    <script src='lib/swagger-oauth.js' type='text/javascript'></script>
    <script src="lib/base64.js" type="text/javascript"></script>

    <!-- Some basic translations -->
    <!-- <script src='lang/translator.js' type='text/javascript'></script> -->
    <!-- <script src='lang/ru.js' type='text/javascript'></script> -->
    <!-- <script src='lang/en.js' type='text/javascript'></script> -->

    <script type="text/javascript">
        /**
         * Password Authorization is a basic auth implementation
         */
        var CustomAuthorization = function (name, token) {
            this.name = name;
            this.token = token;
            this._btoa = null;
            if (typeof window !== 'undefined')
                this._btoa = btoa;
            else
                this._btoa = require("btoa");
        };

        CustomAuthorization.prototype.apply = function (obj, authorizations) {
            var base64encoder = this._btoa;
            var base64 = new Base64();
            var encodeToken = base64.encode(this.token + ":");
            obj.headers["Authorization"] = "Basic " + encodeToken/*base64encoder(this.username + ":" + this.password)*/;
            return true;
        };
        function afterSwaggerLoad() {
            $(function () {
                var basicAuthUI =
                    '<div class="input"><input placeholder="phone" id="input_phone" name="phone" type="text" size="10"></div>' +
                    '<div class="input"><input placeholder="password" id="input_password" name="password" type="password" size="10"></div>';
                $(basicAuthUI).insertBefore('#api_selector div.input:last-child');
                $("#input_apiKey").hide();
                $('#input_username').change(addAuthorization);
                $('#input_password').change(addAuthorization);
            });
            function addAuthorization() {
                var phone = $('#input_phone').val();
                var password = $('#input_password').val();
                /*//先将Password进行MD5编码，然后再Base64
                 password = hex_md5(password);
                 var base64 = new Base64();
                 password = base64.encode(password);*/

                if (phone && phone.trim() != "" && password && password.trim() != "") {
                    var jsonData = {
                        "phone": phone,
                        "password": password,
                        "type": 0
                    };
                    $.ajax({
                        type: "POST",
                        url: "/api/v1/user/login",
                        dataType: "json",
                        data: JSON.stringify(jsonData),
                        contentType: "application/json;charset=UTF-8",
                        success: function (data) {
                            //window.authorizations.remove("Custom");
                            var basicAuth = new CustomAuthorization('Custom', data.token);
                            window.authorizations.add("Custom", basicAuth);
                        },
                        fail: function () {
                            console.log("Test fail.");
                        }
                    });
                    //var basicAuth = new PasswordAuthorization('basic', phone, password);
                    //window.authorizations.add("Basic", basicAuth);
                    //console.log("authorization added: username = " + phone + ", password = " + password);
                }
            }
        }
        $(function () {
            var url = window.location.search.match(/url=([^&]+)/);
            if (url && url.length > 1) {
                url = decodeURIComponent(url[1]);
            } else {
                url = "/v2/api-docs";
            }

            hljs.configure({
                highlightSizeThreshold: 5000
            });

            // Pre load translate...
            if (window.SwaggerTranslator) {
                window.SwaggerTranslator.translate();
            }
            window.swaggerUi = new SwaggerUi({
                url: url,
                dom_id: "swagger-ui-container",
                supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
                onComplete: function (swaggerApi, swaggerUi) {
                    /*if(typeof initOAuth == "function") {
                     initOAuth({
                     clientId: "your-client-id",
                     clientSecret: "your-client-secret-if-required",
                     realm: "your-realms",
                     appName: "your-app-name",
                     scopeSeparator: " ",
                     additionalQueryStringParams: {}
                     });
                     }*/

                    if (window.SwaggerTranslator) {
                        window.SwaggerTranslator.translate();
                    }
                },
                onFailure: function (data) {
                    log("Unable to Load SwaggerUI");
                },
                docExpansion: "none",
                jsonEditor: false,
                defaultModelRendering: 'schema',
                showRequestHeaders: false,
                showOperationIds: false
            });
            $('#input_apiKey').change(function () {
                var key = $('#input_apiKey')[0].value;
                log("key: " + key);
                if (key && key.trim() != "") {
                    log("added key " + key);
                    window.authorizations.add("key", new ApiKeyAuthorization("api_key", key, "query"));
                }
            });

            window.swaggerUi.load();
            afterSwaggerLoad();

            function log() {
                if ('console' in window) {
                    console.log.apply(console, arguments);
                }
            }
        });
    </script>
</head>

<body class="swagger-section">
<div id='header'>
    <div class="swagger-ui-wrap">
        <a id="logo" href="http://swagger.io"><img class="logo__img" alt="swagger" height="30" width="30"
                                                   src="images/logo_small.png"/><span class="logo__title">swagger</span></a>
        <form id='api_selector'>
            <div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl"
                                      type="text"/></div>
            <div id='auth_container'></div>
            <div class='input'><a id="explore" class="header__btn" href="#" data-sw-translate>Explore</a></div>
        </form>
    </div>
</div>

<div id="message-bar" class="swagger-ui-wrap" data-sw-translate>&nbsp;</div>
<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
</body>
</html>
